.\" Copyright (C) 1994, 1995, Daniel Quinlan <quinlan@yggdrasil.com>
.\" Copyright (C) 2002-2008, 2017, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Copyright (C) 2023, Alejandro Colomar <alx@kernel.org>
.\"
.\" SPDX-License-Identifier: GPL-3.0-or-later
.\"
.TH proc_pid_environ 5 2024-06-15 "Linux man-pages 6.9.1"
.SH NAME
/proc/pid/environ \- initial environment
.SH DESCRIPTION
.TP
.IR /proc/ pid /environ
This file contains the initial environment that was set
when the currently executing program was started via
.BR execve (2).
The entries are separated by null bytes (\[aq]\[rs]0\[aq]),
and there may be a null byte at the end.
Thus, to print out the environment of process 1, you would do:
.IP
.in +4n
.EX
.RB "$" " cat /proc/1/environ | tr \[aq]\[rs]000\[aq] \[aq]\[rs]n\[aq]"
.EE
.in
.IP
If, after an
.BR execve (2),
the process modifies its environment
(e.g., by calling functions such as
.BR putenv (3)
or modifying the
.BR environ (7)
variable directly),
this file will
.I not
reflect those changes.
.IP
Furthermore, a process may change the memory location that this file refers via
.BR prctl (2)
operations such as
.BR PR_SET_MM_ENV_START .
.IP
Permission to access this file is governed by a ptrace access mode
.B PTRACE_MODE_READ_FSCREDS
check; see
.BR ptrace (2).
.SH SEE ALSO
.BR proc (5)
